package com.study.bigdata.spark.core.rdd.instance

import org.apache.spark.{SparkConf, SparkContext}

object Scala02_RDD_Instance_File_Partition_Data {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local[*]").setAppName("WordCount")
    val sc = new SparkContext(conf)

    // TODO 从文件中创建RDD
    // TODO 1.分区数据的处理是由hadoop决定的
    // TODO 2.hadoop计算分区时和处理数据时逻辑不一样
    // TODO 3.spark底层读取数据使用hadoop读取，采用hadoop规则
    //        hadoop按行读取，不是按照字节
    //        hadoop读取数据按照偏移量读取
    //        hadoop读取数据时，不会重复读取相同的偏移量
    val rdd = sc.textFile("data/word.txt",3)

    /*
    321@@  => [01234]
    654@@  => [56789]
    789    => [101112]
    分区数量：13/3=4  13/4=3...1=3+1=4
    [0,4]  => [321]
    [4,8]  => [654]
    [8,12]  => [789]
    [12,13]  => []
    =========
    如果是  切片数：2
    1@@  => 012
    2@@  => 345
    3    => 6
    分区数量：7/2=3  7/3=2...1=2+1=3
    [0,3] => [12]
    [3,6] => [3]
    [6,7] => []
     */
    rdd.saveAsTextFile("output")

    sc.stop()

  }

}
